\section{Modelo Conceptual}

En el modelo conceptual intentamos representar la siguiente información
\begin{itemize}
	\item El stock de un determinado modelo
	\item Las promociones que aplican sobre los paquetes
	\item Qué modelos tiene remanentes
	\item El programa de visitas a un cliente por un vendedor determinado
	\item La cantidad de lineas que tiene un cliente
	\item El monto del pago mensual de un cliente

\end{itemize}
	
\begin{figure}[h!]
\centering
\includegraphics[width=\textwidth]{imgs/diagrama_conceptual.png}
\end{figure}


\begin{enumerate}
	\item "En cada venta de un paquete en la que se aplique una promocion, debe valer que la promocion
		puede aplicarse a dicho paquete"

		\begin{itemize}
			\item 
			\begin{verbatim}
			CONTEXTO: Paquete
			\end{verbatim}
			\item 
			\begin{verbatim}
			INV: self.ItemDeVenta->forAll(i | self.puedeAplicarsele->includes(i.seLeAplica)  )
			\end{verbatim}
		\end{itemize}

	\item "La cantidad de lineas activas de un cliente es igual a la suma de la cantidad de lineas 
en ventas concretadas"
\begin{itemize}
	\item 
	\begin{verbatim}
	CONTEXTO: Cliente
	\end{verbatim}
	\item 
	\begin{verbatim}
	INV: self.lineasActivas = 
		self.seLeRealizan
		->select( v | v.EstadoVenta = EstadoVenta.Confirmada)
		->collect( v | v.itemDeVenta->collect( i | i.cantidad * i.vende.numeroDeLineas))
		-> sum()
\end{verbatim}

\end{itemize}

\item "La paga mensual de un cliente es igual a la suma de lo que paga por cada linea activa con su respectiva promocion, si
la tiene"

\begin{itemize}
	\item 
	\begin{verbatim}
	CONTEXTO: Cliente
	\end{verbatim}
	\item 
	\begin{verbatim}
	INV: self.pagaMensual =
		self.seLeRealizan
		->select( v | v.EstadoVenta = EstadoVenta.Confirmada)
		->collect( v | 
			v.itemDeVenta->collect( i | 
				i.cantidad 
				* i.vende.numeroDeLineas 
				* IF i.seLeAplica->count() = 1 then i.seLeAplica->first().descuentoAbono ELSE 0 ENDIF
				* i.vende.conPlan.precioFijo))
		-> sum()
\end{verbatim}
\end{itemize}

\end{enumerate}

